/**
 * Created by Administrator on 2016/6/13.
 */
// 加载依赖项
// 加载web框架
var express = require('express');
// 加载POST提交支持
var bodyParser = require('body-parser');
// 加载cookie支持
var cookieParser = require('cookie-parser');
// 加载文件读写支持
var fs = require('fs');
//实例化应用
var app = express();

// 设置下post请求
app.use(bodyParser.urlencoded({extended:true}));
// 应用cookie
app.use(cookieParser());
// 设置静态资源
app.use(express.static('www'));

//用户post提交注册页面
//即用户发送了一个post请求，请求的地址是register，就用后面的回调函数处理一下
//回调函数有两个参数，req是请求（拿到请求内的数据），res是返回（返回给用户数据）
app.post('/register',function(req,res){

    //get提交的数据在req.query里面，post提交的数据在req.body里面
    //req.query,req.body拿到数据。如req.body.petname,req.body.password

    //拿到数据之前在body里面增加了两个属性，IP和用户发送请求的当前时间，
    //和数据放到一起，保存到文件中去

    //首先我们先保存下用户的IP
    req.body.ip = req.ip;
    //在保存下日期
    req.body.time = new Date();
    //发送函数
    function send(code,message){
        res.status(200).json({code,message});
    }
    //通过一个函数把数据保存在一个users/用户名命名.txt的文件中
    function saveFile(){
        //首先要确定一下保存的文件目录是在users/用户名.txt文件中去
        //写文件路径是加``;
        var filename = `users/${req.body.petname}.txt`;
        //查看下文件名是否存在的函数，即是否注册使用过
        fs.exists(filename,function(exists){
            //如果文件名存在，就返回给前端信息，前端就在模态框中提示用户名已经存在
            if(exists){
                send('error','用户名已经存在');//res.status(200).json({code:"error",message:"用户名已经存在"})
            }else{
                //如果不存在，就可以进行注册了，保存一下
                //fs.appendFile是用来打开文件并写入的一个函数
                //第一个参数是要写入的文件的名称
                //第二个参数是要写入哪些数据信息
                //第三个参数是回调函数返回错误信息，然后send不同的状态
                fs.appendFile(filename,JSON.stringify(req.body),function(err){
                    if(err){
                        send('error','系统错误');
                    }else{
                        send('success','注册成功');
                    }
                })
            }
        })
    }
    fs.exists('users',function(exists){
        if(exists){
            saveFile();
        }else {
            fs.mkdir('users', function(err) {

                if(err){
                    send('error','系统错误');
                }else{
                    saveFile();
                }
            });
        }
    })
})
//登录的处理
app.post('/index',function(req,res){
    var filename = `users/${req.body.petname}.txt`;
    function send(code,message){
        res.status(200).json({code,message});
    }
    fs.exists(filename,function(exists){
        if(exists){
            //=======================================
            fs.readFile(filename,function(err,data){
                if(err){
                    send('error','系统错误');
                }else{
                    //把信息转化成JS的对象来比较密码是否一样
                    var user = JSON.parse(data);
                    if(user.password == req.body.password){
                        //在服务器端创建一个cookie，保存起来，
                        //里面存储的是用户名信息
                        res.cookie('petname',req.body.petname)
                        send('success','登录成功')
                    }else{
                        send('error','密码错误')
                    }
                }
            })
        }else{
            send('error','用户名不存在')
        }
    })
})
// app.get('/',function(req,res){
//     function send(code,message,data){
//         res.status(200).json({code,message,data});
//     }
// })

// 启动
app.listen(3000,function(){
    console.log('node is ok');
});
